\chapter*{Element Catalog} \label{elementCatalog}
\subsection*{Incoming Communication Module}
This module will take care of all the incoming trames from the remote devices. Measurement trames, alarm trames and confirmation trames are scheduled here and passed on to the next component. The validity of the trame is checked as well to make sure that bad trames do not enter the system any further.
\subsection*{Outgoing Communication Module}
This module takes care of the outgoing trames and of the outgoing notifications to customers and ReMeS operators. It receives commands and converts them to trames to send to the remote modules over the correct channel. The notifications are send to all the recipients over the right channel.
\subsection*{Alarm Handler}
The Alarm Handler component receives alarm trames from the Incoming Communication Module and makes sure that the customer is notified of the alarm and that a valve shutdown is performed, to prevent more leaks.
\subsection*{Notification Handler}
The Notification Handler has a connection to the database where recipients data is stored. This is the only component that can read this data, so all notification are build here. When the notification is build it is send to the Outgoing Communication Module for transmission to the recipient(s).
\subsection*{Command Sender}
This component offers multiple command interfaces to the other components. For all the commands that are send through this component it expects to receive a confirmation of the remote module. When no confirmations are received in time, the command can automatically be re-transmitted. If after a number of attempts this still fails a ReMeS operator can be notified using the Notification Handler. This component also offers an interface to send acknowledgments for received measurement trames from the remote module. The acks are not stored, because they don't expect to receive a confirmation from the remote module.
\subsection*{Notification DB}
This is the database where the notification data is stored, meaning the contact information for every customer and ReMeS operator.
\subsection*{Main DB}
The main database holds all the data. 
\subsection*{Trame Validator}
This component will check the trame validity. When a trame is not valid it is prevented from entering the system. A valid trame is passed onto the next component.
\subsection*{Trame Buffer}
All valid trames that enter the system are stored in the trame buffer.
\subsection*{Incoming Trame Scheduler}
The scheduler will use scheduling algorithms to make sure that more important trames in the buffer have a higher priority and thus are handled faster than regular lower priority trames.
\subsection*{Incoming Communication Message Router}
After the trames are scheduled, they are passed to the message router. The message router will send alarm trames to the Alarm Handler, confirmation trames to the Command Sender and all other trames (e.g. measurement trames, configuration trames) to the data processor component.
\subsection*{Data Processor}
Will handle all trames but Alarm and confirmation trames. For measurement trames it tells the Command Sender to reply to the remote module with an acknowledge command. Incoming measurements are send to the anomaly detector and stored in the main database. Configuration trames are just stored in the database.
\subsection*{Channel Selection Module}
For trames and notifications in the Outgoing Communication Module this component will make sure that they reach their destination. For trames it checks the database for the right channel to send the trame over. For notifications the channel is embedded in the notification, but then this component makes sure that the notification is send to all the needed recipients.
\subsection*{Command Buffer}
The command buffer stores all the commands, to make sure that when a burst of commands happens, no commands are lost.
\subsection*{Outgoing Communication Scheduler}
The scheduler makes sure the commands with higher priorities are the first one to be send to the remote module.
\subsection*{Trame Builder}
The trame builder receives commands and transforms them to valid trames. When this is done it passes the trame to the Channel Selection Module for transmission.
\subsection*{Main DB Scheduler}
The Main DB Scheduler receives read and store requests from different components and schedules these requests according to their priority. We did not add a separate buffer before this scheduler but it is obvious that a buffer is included in the scheduler to store the requests.
\subsection*{Main DB Interface}
This component processes the requests and provides load balancing over all the different database replica's.
\subsection*{Main DB Replica 1, 2 and 3}
The database replica's.
\subsection*{Anomaly Detector}
This component does all the anomaly detection for the incoming measurements.
\subsection*{Anomaly Detector Scheduler}
Since anomaly detection has priorities in overload modus, we provided a scheduler to do the scheduling of the measurements.
\subsection*{Anomaly Master}
The master gets the scheduled measurement, requests additional measurements from the database if needed and passes the processing of the anomaly detection to the Anomaly Slave Pool.
\subsection*{Anomaly Slave Pool}
The Anomaly Slave Pool is a resource pool with different slaves that can be used by the master to do the anomaly detection calculations.
\subsection*{Missing Measurement Checker}
The Missing Measurement Checker systematically checks the database for missing measurements. When it find that measurements are missing, it notifies a ReMeS operator.
\subsection*{Billing Service}
The Billing Service makes the bill for the customers with the detailed pricing it has stored in the database and passes the bill to the Third Party Billing Service.
\subsection*{UIS Interface}
Provides an interface for the UIS to adjust their prices for groups as well as for individual customers. The UIS can also request a consumption prediction for a specified time.
\subsection*{Consumption Predictor}
The Consumption Predictor component gets measurement data from the database and does calculations to perform consumption prediction. It also has an interface to request an update of the prediction over a specific time.
\subsection*{Fraud Detection}
This component send the measurement data in batch to the Third Party Fraud Detection. When fraud has been detected, the Third Party Fraud Detection Service can let ReMes know. This Component will the send an issue notification to a ReMeS operator when a case of fraud has been detected.
\subsection*{Customer Portal}
This is the web interface for the customer. If the person is not yet a customer, he has the ability to register. When a person is already a customer he has the ability to log in and off, to check relevant data from his account and to personalize his account (e.g. Add alarm recipients, change between static and dynamic pricing, ...).
\subsection*{Operator Portal}
This is the portal where the operator/technician must log in. The technician has the ability to connect a new user with a new device (or multiple devices).
\subsection*{Researcher Portal}
The researcher can use this portal to get statistics and to perform his specific queries on the database.
\subsection*{Statistics}
This component allows users to get specific statistics from the database in a specific layout.
